package com.jiangyg.mall.ware.service;

import com.jiangyg.mall.core.support.restful.Pagination;
import com.jiangyg.mall.ware.dto.PurchaseDTO;
import com.jiangyg.mall.ware.vo.PurchaseVO;

import java.util.List;

/**
 * 类描述：采购信息
 *
 * @author jiangyg
 * @email email@jiangyg.com
 * @date 2021-10-18 22:33:27
 */
public interface PurchaseService {

    /**
     * 功能描述：采购信息分页查询
     *
     * @param pagination 分页参数
     * @return 返回分页信息
     */
    Pagination<PurchaseVO> selectPagination(Pagination<PurchaseVO> pagination) throws Exception;

    /**
     * 功能描述：保存或者修改采购信息
     *
     * @param dto 采购信息
     * @return 返回是否操作成功
     */
    boolean saveOrUpdate(PurchaseDTO dto) throws Exception;

    /**
     * 功能描述：根据ID获取Purchase
     *
     * @param purchaseId 采购信息ID
     * @return 返回采购信息
     */
    PurchaseVO selectById(Long purchaseId) throws Exception;

    /**
     * 功能描述：批量删除Purchase
     *
     * @param purchaseIds 要删除的ID数组
     * @return 返回是否操作成功
     */
    boolean delete(List<Long> purchaseIds);

    /**
     * 功能描述：采购单人员分配
     *
     * @param dto 采购信息
     * @return 结果
     */
    boolean assignee(PurchaseDTO dto);

    /**
     * 功能描述：查询未分配采购单列表
     *
     * @return 返回分页采购信息
     */
    List<PurchaseVO> unassignedList(Long wareId) throws Exception;

    /**
     * 功能描述：采购单人员领取
     *
     * @param purchaseIds 采购信息ID集合
     * @return 结果
     */
    boolean received(List<Long> purchaseIds);

    /**
     * 功能描述：采购任务完成
     *
     * @param purchaseIds 采购信息ID集合
     * @return 结果
     */
    boolean finished(List<Long> purchaseIds);

}

